package com.woniuxy.utils;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

/**
 * @author cxz
 *
 */
@Component
public class RedisUtil {
    @Autowired
    private RedisTemplate redisTemplate;

    public void set(String key, Object value, long timeout, TimeUnit timeUnit) {
        redisTemplate.opsForValue().set(key, value, timeout, timeUnit);
    }

    /**
     * 方法尝试将指定的键值对存入 Redis 中，仅当给定的键（key）在 Redis 中不存在时才会执行存储操作。
     * 如果键不存在，就把键值对存入 Redis，并为该键设置过期时间（由timeout和unit共同确定） ，
     * 同时返回true；如果键已经存在，那么不会对已有的键值对做任何修改，直接返回false 。
     */
    public boolean setIfAbsent(String key, Object value, long timeout, TimeUnit timeUnit) {
        return redisTemplate.opsForValue().setIfAbsent(key, value, timeout, timeUnit);
    }

    public Object get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

    public boolean delete(String key) {
        return redisTemplate.delete(key);
    }
}
